//package java8;
//
//import java.util.ArrayList;
//import java.util.Comparator;
//import java.util.List;
//import java.util.Optional;
//import java.util.stream.Collectors;
//
///**
// * @program: planet-company
// * @description:
// * @author: jyz
// * @create: 2019-07-01 14:52
// **/
//public class StreamTest {
//
//    /**
//     * 1、匿名函数：可以理解为可以传递代码或方法的函数
//     * 2、进到代码块就相当于进入了工厂，方法，处理，结果
//     * 3、
//     *
//     *
//     * @param args
//     */
//    public static void main(String[] args) {
//        StreamTest streamTest = new StreamTest();
//        streamTest.parallelTest();
//    }
//
//
//    /**
//     * 并发流
//     */
//    public void parallelTest(){
//        Person person1 = new Person();
//        person1.setPhone("15658163361");
//        person1.setName("郑冉");
//        person1.setAge(18);
//        Person person2 = new Person();
//        person2.setPhone("13757195640");
//        person2.setName("贝尔");
//        person2.setAge(19);
//        Person person3 = new Person();
//        person3.setPhone("15225138269");
//        person3.setName("运来");
//        person3.setAge(20);
//        Person person4 = new Person();
//        person4.setPhone("15558105856");
//        person4.setName("亚子");
//        person4.setAge(21);
//
//        List<Person> personList = new ArrayList<>();
//        personList.add(person1);
//        personList.add(person2);
//        personList.add(person3);
//        personList.add(person4);
//        personList.stream().forEach(person -> {
//            System.out.println(person.getName());
//            if (person.getAge()==18){
//                person.setName("呵呵");
//            }
//        });
//
//        //foreach用的是对象传递，没有返回值，直接改变当前对象
//        personList.stream().forEach(person -> {
//            System.out.println("第一层处理 == "+person.getName());
//        });
//        //map是有返回值的，它是用临时新对象处理，所以不会改变元对象
//        personList.stream().map(person -> {
//           if (person.getAge() < 19){
//               person.setName("呵呵");
//           }
//           return person;
//        });
//
//
//        personList = personList.stream().filter(person -> person.getAge()>18).collect(Collectors.toList());
//        personList.stream().forEach(person -> {
//            System.out.println("第二层处理 == "+person.getName());
//        });
//
//
//        personList.stream().sorted(Comparator.comparing(Person::getAge));
//
//
//
//
//        Optional<Person> personOptional = Optional.ofNullable(personList.get(0)).orElseThrow("用户不存在");
//
//
//
//    }
//
//
//
//    class Person{
//        String phone;
//        String name;
//        Integer age;
//
//        public String getPhone() {
//            return phone;
//        }
//
//        public void setPhone(String phone) {
//            this.phone = phone;
//        }
//
//        public String getName() {
//            return name;
//        }
//
//        public void setName(String name) {
//            this.name = name;
//        }
//
//        public Integer getAge() {
//            return age;
//        }
//
//        public void setAge(Integer age) {
//            this.age = age;
//        }
//    }
//}
